package org.example.dao;



import org.example.entity.paqude;
import org.example.util.DbUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

//数据访问对象 data access object：包含针对一张表的增 删 改 查 方法
public class paqudao {
    //添加  添加除主键之外的所有列
    public Integer addStudent(paqude stu){

        Connection  cn  = DbUtil.getConn();
        try {
            String  insert = "insert into student (stu,stus) values (?,?)";
            PreparedStatement ps =cn.prepareStatement(insert);
            //创建执行增删改查的工具，以及为语句中的 ? 注入数据
            ps.setString(1,stu.getStu());
            ps.setString(2, stu.getStus());
            //ps.setInt(6,stu.getStuscore());
            int result = ps.executeUpdate();//增删改 都是对表的修改,返回影响的行数
            return result;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            DbUtil.closeConn();
        }
    }

    //修改  以id为条件 修改其他所有列
    public Integer updateStudent(paqude stu){
        return 0;
    }

    //删除
    public Integer deleteStudent(Integer sid){
        return 0;
    }

    //多行结果查询

    public List<paqude> querypaqu(){
        //使用 集合List 保存查询结果的多个对象
        //List是一个接口，表示一个有序的集合，可以包含重复的元素。
        //<paqude>是泛型参数，指定列表中存储的元素类型为paqude。
        // paqude是一个自定义的类，通常是一个JPA（Java Persistence API）实体类，用于映射数据库中的表。
        //ArrayList是List接口的一个实现类，它使用一个动态数组来存储元素
        List<paqude> students = new ArrayList<paqude>();
        Connection  cn  = DbUtil.getConn();
        try {
           String select = "select * from student";
           PreparedStatement preparedStatement = cn.prepareStatement(select);
           ResultSet rs = preparedStatement.executeQuery();
            while(rs.next()){
                //将查询结果的每行数据 封装为对象 并加入到集合内
                paqude pp = new  paqude(
                        rs.getInt("id"),
                        rs.getString("stu"),
                        rs.getString("stus")
                );
                students.add(pp);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            DbUtil.closeConn();
        }

        return students;
    }

    //根据ID查询单个数据

    public paqude querypaqude(Integer id){
        Connection  cn  = DbUtil.getConn();
        try {
            String select = "select * from student where id= ?";
            PreparedStatement preparedStatement = cn.prepareStatement(select);
            preparedStatement.setInt(1, id);
            ResultSet rs = preparedStatement.executeQuery();
            if(rs.next()){
                //将查询结果的每行数据 封装为对象 并加入到集合内
                paqude st = new  paqude(
                        rs.getInt("id"),
                        rs.getString("stu"),
                        rs.getString("stus")
                );
                return  st;
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            DbUtil.closeConn();
        }
        return null;
    }


}
